from typing import Dict, Any

from app.models import create_response
from app.models.user import User, UserItem, UserPersonal, UserPersonalItem

def merge_user_data(user:User, user_personal:UserPersonal) -> Dict[str, Any]:
    """
    合并用户信息
    参数：
    - user: User 实例
    - user_personal: UserPersonal 实例
    返回值：
    - user_item: 合并后的用户信息 dict
    """
    user_item = UserItem.model_validate(user).model_dump()
    user_personal_item = UserPersonalItem.model_validate(user_personal).model_dump()
    user_item.update(user_personal_item)
    del user_item['userPassword']

    return user_item

def merge_users_data(user_info_list: dict) -> Dict[str, Any]:
    """
    合并用户信息列表
    参数：
    - user_info_list: 用户信息列表 List[Tuple[User, UserPersonal]]
    返回值：
    - res: 合并后的用户信息列表 List[Dict]
    """
    res = []
    if user_info_list['dataList'] is None:
        return create_response(data={"total":0, "dataList":[]}, message='用户列表为空', code=200)
        
    elif not isinstance(user_info_list['dataList'], list):
        return create_response(data={"total":0, "dataList":[]}, message='数据格式错误', code=500)

    else:
        for item in user_info_list['dataList']:
            user, user_personal = item
            res.append(merge_user_data(user, user_personal))
        user_info_list['dataList'] = res
        return create_response(data=user_info_list, message='获取用户列表成功', code=200)